El desarrollo de la guía de clientes MQTT-SN proporciona una guía paso a paso para comenzar desarrollo Los agentes de dispositivos IoT usando MQTT-SN publican protocolos de mensajería de suscriptos (MQTTpara redes de sensores) según la norma Oasis del comité técnico del MQTT.
MQTT-SN es una versión de protocolo que te ayuda a crear sensores IoT agentes para bajo consumo de energía dispositivos IoT. El protocolo MQTT-SN (SN MQTT para sensor) puede ser programada para comunicarse sobre dispositivos integrados en redes no TCP/IP, comozigbee,Bluetooth, z-waveo cualquier otro medio incluyendo redes de sensores cableados e inalámbricos. Este protocolo no necesita un ambiente conectado como MQTT. Pero cualquier bidireccional los protocolos de red perdidos MQTT y MQTT-SN. MQTT SN especificación está disponible enmqtt.org.
La comunicación de máquina a máquina, máquina a usuario, máquina a máquina no puede suceder sin un poderoso servidor central. Los dispositivos y aplicaciones de borde MQTT se comunican a través del MQTT Broker que actúa como el servidor central. Puede descargar elEnterprise MQTT Brokerque se puede ejecutar en Windows y Linux ahora y empezar.
La principal ventaja de la SN es la reducción del tamaño del paquete y sin conexión para asegurarse el la transacción requiere menos energía. Los siguientes son:técnicos beneficios/diferencias del uso MQTT-SN sobre MQTT.
Cabecera fija
Cabecera variable
TopicIdType | CleanSession | Will | Retain | QoS | DUP |
---|---|---|---|---|---|
0, 1 | 2 | 3 | 4 | 5,6 | 7 |
El DUP, Retain, WILL, CleanSession son los mismos que el MQTT.
Se establecerán a 0 o uno por necesidad.
El bit 0 y 1 de Bandera se utilizará para especificar el Tépico tipo id.
El bit 5, 6 t se utilizará para especificar el QoS.
Un nuevo cliente en una red necesita transmitir un paquete de búsqueda para encontrar la dirección de un Puerta de entrada. Además, un cliente puede conectarse directamente si conoce la dirección de un portal MQTT-SN.
Estructura de una búsqueda Paquete GW
1. Este mensaje es de tres bytes de largo. El primer byte es el longitud. El segundo byte es el tipo de mensaje 0x01. El tercer byte es el radio de la emisión que tiene que se establece en la red subyacente también.
2. Este mensaje debe ser transmitido en la red en una intervalo de tiempo y recibirá un mensaje de respuesta como GWINFO.
El Cliente puede conectarse en dos métodos.
1. Conexión sin voluntad - La respuesta será mensaje connack
2. Conectarse con el testamento - La respuesta será un tema de voluntad petición.
Duración | MsgType (0x04) | Banderas | Protocolo Id | Duración | Clienteide |
---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4.5 | 6-N |
Tema de Will
Duración | MsgType (0x07) | Banderas | Tema de Will |
---|---|---|---|
0 | 1 | 2 | 3-N |
Después de establecer un tema de voluntad con éxito, la puerta de entrada enviará a mensaje de voluntad solicitud y el cliente tiene que enviar El mensaje de voluntad.
Duración | Msgtype (0x09) | Willmsg |
---|---|---|
0 | 1 | 2-N |
Hay cuatro maneras en las que se puede publicar un paquete MQTT-SN.
Usando el ID Tópico registrado –El cliente tiene que registre el nombre de tema con la puerta de entrada y luego comience a publicar utilizando el recibido Tema ID.
Usando temas cortos –El cliente publicar directamente utilizando un nombre de tema cuando la longitud del nombre de tema es inferior a 2 bytes.
Usando Temas Predefinidos -El puerta de entrada tener un tema predefinido cuyo tema ID puede ser utilizado por el cliente para publicar. El predefinido ID de tópico en el que se conoce el ID de tópico de un tópico tanto para el servidor como para el cliente No necesidad de registrarse
Tema Adhoc –Esto es un especial Donde el cliente no tiene que crear una conexión a la puerta de entrada que simplemente puede comenzar editoriales establecer la bandera QoS a -1 no establecimiento de conexión o terminación de la puerta de entrada mantener una conexión MQTT separada con el corredor para manejar este tipo de publicación. En QoS -1 publicar cliente sólo puede utilizar id tema predefinido o nombre de tema corto, no hay conexión Configuración así no es posible registrar el tema
Estructura del paquete para el registro y la publicación son los siguientes.
Registro
Duración | Msgtype(0x0A) | Topicid | Msgid | TopicName |
---|---|---|---|---|
0 | 1 | 2,3 | 4,5 | 5-N |
El ID del tema debe ser codificado como 0 cuando el mensaje del registro es enviado el cliente.
El Cliente puede obtener el ID de tema de la regack utilizando lo siguiente paquete estructura
RegAck
Duración | Msgtype(0x0B) | Topicid | Msgid | TopicName |
---|---|---|---|---|
0 | 1 | 2,3 | 4,5 | 6 |
El cliente tiene que coincidir con el mensaje REGACK adecuado al Registro paquete usando el mensaje-id. El Cliente tiene que comprobar el código de devolución de REGACK y si su 0 el cliente puede usar el id de Tema de lo contrario tiene que enviar el paquete de registro de nuevo.
Duración | MsgType(0x0C) | Banderas | Topicid | Msgid | Datos |
---|---|---|---|---|---|
0 | 1 | 2 | 3,4, | 5,6 | 7 |
Un cliente puede utilizar id tópico para suscribirse a un tema si está previamente registrado a un Tema. It puede utilizar el nombre de tema o el nombre de tema corto para suscribirse. Recibirá un suback mensaje con Tema id. El paquete de suscripción es el mismo que suscribe. La estructura del paquete suscribirse y a continuación se indica la subscripción
Estructura
Duración | MsgType (subscribe (0x12) / unsubscribe (0x14)) | Banderas | MsgId | Nombre del tema o tema |
---|---|---|---|---|
0 | 1 | 2 | 3,4 | 5,6,5-N |
El paquete Suscribir tendrá una longitud variable si suscribe utilizando TopicName de lo contrario será 7 bytes.
Hay dos maneras en las que un cliente puede desconectar de la puerta de entrada.
Desconexión permanente
El cliente tiene que enviar un paquete de desconexión para desconectar permanentemente. It actúa como MQTT.
Desconectarse con el sueño
El cliente enviará un mensaje de desconexión con duración del tiempo y ir a dormir durante ese tiempo la puerta de entrada amortiguará los mensajes de ese cliente durante este tiempo período. El cliente tiene que enviar un mensaje de ping para obtener el mensaje amortiguado y lo hará recibir publicar mensajes del búfer. El cliente recibe un ping resp si el búfer es vacío. El cliente tiene que enviar un ping antes del período especificado o la puerta de entrada se considerará como un perdido cliente.
Duración | MsgType (0x18) | Duración(Opcional) |
---|---|---|
0 | 1 | 2-3 |
El MQTT-SN tiene una disposición para actualizar el Tema y el mensaje de WILL en cualquier momento. Esto es... una funcionalidad avanzada sobre el protocolo de mensaje MQTT.
WILLTOPICUPD
El cliente tiene que enviar un paquete de desconexión para desconectar permanentemente. It actúa como MQTT.
Desconectarse con el sueño
El cliente enviará un mensaje de desconexión con duración del tiempo y ir a dormir durante ese tiempo la puerta de entrada amortiguará los mensajes de ese cliente durante este tiempo período. El cliente tiene que enviar un mensaje de ping para obtener el mensaje amortiguado y lo hará recibir publicar mensajes del búfer. El cliente recibe un ping resp si el búfer es vacío. El cliente tiene que enviar un ping antes del período especificado o la puerta de entrada se considerará como un perdido cliente.
Duración | MsgType(0x1A) | Banderas | Will Topic |
---|---|---|---|
0 | 1 | 2 | 3-N |
La bandera tendráQoSyretenimiento.
Un mensaje de respuesta de Will Topic será enviado como respuesta en el A continuación estructura
Duración | MsgType(willtopicresp (0x1B) / willmessageresp (0x1D)) | ReturnCode |
---|---|---|
0 | 1 | 2 |
Si el código de devolución es diferente a 0 tiene que reenviar Willtopicupd.
WILLMSGUPD
Duración | MsgType(0x1C) | WillMsg |
---|---|---|
0 | 1 | 2-N |
El cliente tiene que hacer un seguimiento de los siguientes mensajes además de los le reconoce envía.
1. Paquete de anuncios
2.SearchGW
3.Registro
Paquete de anuncios
Las puertas de la red enviarán un paquete de anuncios en un cierta período de tiempo. El cliente tiene que mantener la lista de portales activos en la red por el duración anunciada.
SearchGW
El cliente tiene que responder a un mensaje de búsqueda por radiodifusión a gwinfo Mensaje. Tiene que enviar una dirección de entrada activa de su lista de direcciones de la puerta de entrada.
Registro
Si un cliente está reconectado recibirá un mensaje de registro con el nombre de tema e ID de tema para sus registros anteriores y su suscripción tiene que almacenar el nombre de tema e identificación.